builtinicon: Change the way size is handled
authorBenjamin Otte <otte@redhat.com>
Wed, 16 Dec 2015 03:44:52 +0000 (04:44 +0100)
committerBenjamin Otte <otte@redhat.com>
Wed, 16 Dec 2015 03:46:23 +0000 (04:46 +0100)
Make min-width/height have preference over the set default size. This
allows shrinking the widget. The default size is only used if min-width
is not set (or explicitly set to 0.

gtk/gtkbuiltinicon.c

index c2e2c07cb86148b85b154810aa271db2e8210643..9c497c4d1d764c60ab1bf4b4ade921b5cba78b27 100644 (file)
@@ -22,6 +22,7 @@
 #include "gtkbuiltiniconprivate.h"
 
 #include "gtkcssnodeprivate.h"
+#include "gtkcssnumbervalueprivate.h"
 #include "gtkrendericonprivate.h"
 
 typedef struct _GtkBuiltinIconPrivate GtkBuiltinIconPrivate;
@@ -43,6 +44,19 @@ gtk_builtin_icon_get_preferred_size (GtkCssGadget   *gadget,
                                      gint           *natural_baseline)
 {
   GtkBuiltinIconPrivate *priv = gtk_builtin_icon_get_instance_private (GTK_BUILTIN_ICON (gadget));
+  double min_size;
+  guint property;
+
+  if (orientation == GTK_ORIENTATION_HORIZONTAL)
+    property = GTK_CSS_PROPERTY_MIN_WIDTH;
+  else
+    property = GTK_CSS_PROPERTY_MIN_HEIGHT;
+  min_size = _gtk_css_number_value_get (gtk_css_style_get_value (gtk_css_gadget_get_style (gadget), property), 100);
+  if (min_size > 0.0)
+    {
+      *minimum = *natural = 0;
+      return;
+    }
 
   *minimum = priv->default_size;
   *natural = priv->default_size;